var express = require('express');
var auth = require('basic-auth');
var router = express.Router();

var mongoose = require('mongoose');

var Schema = mongoose.Schema,
    ObjectId = Schema.ObjectId;

var Resume = new Schema({
    author: ObjectId,
    endCode: Number,//修改次数
    readTotal: Number,//阅读总数
    desc: String,//个人简介
    info: {//详细信息
        name: String,//姓名
        location: String,//地点
        phone: String,//手机
        email: String,//邮件
        birthday: String,//生日
        home: String//老家
    },
    target: String,//就业目标
    skills: [String],//IT技能
    keyProps: [
        {
            key: String,
            value: String
        }
    ],
    educations: [String],//教育经历
    experiences: [{//工作经验
        tags: [String],//标签
        descriptions: [String]//具体描述
    }],
    text: String//正文

});

var MyResume = mongoose.model("MyResume", Resume);

/* GET home page. */
router.get('/', function (req, res, next) {
    get(res, function (resume) {//已经存在则直接转发
        if (!resume.readTotal) {//更新查看次数
            resume.readTotal = 0;
        }
        resume.readTotal += 1;
        resume.save(function (err) {

        });
        res.render('index', {title: "简历", resume: resume});
    })
});
router.get('/guest', function (req, res, next) {//游客查看连接
    get(res, function (resume) {//已经存在则直接转发
        res.render('index', {title: "简历", resume: resume});
    })
});
router.get('/admin', function (req, res) {
    var credentials = auth(req);
    if (!credentials || credentials.name !== 'admin' || credentials.pass !== 'wscl123') {
        res.statusCode = 401;
        res.setHeader('Content-Type', '*; charset=utf-8');
        res.setHeader('WWW-Authenticate', 'Basic realm="Please confirm the identity"');
        res.end('Access denied');
    } else {
        get(res, function (resume) {//已经存在则直接转发
            res.render('index', {title: "简历", admin: true, resume: resume});
        });
    }
});
router.post('/', function (req, res, next) {
    var newResume = eval(req.body);
    console.info(newResume);
    get(res, function (resume) {//已经存则判断更新
        //简介
        if (newResume.desc) {
            resume.desc = newResume.desc;
        }
        //详细信息
        if (newResume.info) {
            resume.info = newResume.info;
        }
        //目标
        if (newResume.target) {
            resume.target = newResume.target;
        }
        //关键属性
        if (newResume.keyProps) {
            resume.keyProps = newResume.keyProps;
        }
        //技能
        if (newResume.skills) {
            resume.skills = newResume.skills;
        }
        //教育背景
        if (newResume.educations) {
            resume.educations = newResume.educations;
        }
        //经验
        if (newResume.experiences) {
            resume.experiences = newResume.experiences;
        }
        //正文
        if (newResume.text) {
            resume.text = newResume.text;
        }
        if (!resume.endCode) {
            resume.endCode = 0;
        }
        resume.endCode += 1;
        resume.save(function (err) {
            var result = 0;
            if (!err) {
            } else {
                result = 1;
            }
            res.end(result);

        });
    })
});
function get(res, exists) {
    MyResume.findOne(function (err, doc) {
        var myresume = doc;
        if (!err) {
            if (myresume == null) { //如果不存在则保存一份再转发到页面
                myresume = new MyResume(resume);
                myresume.save(function (err) {
                    if (!err) {
                        req.redirect('/');
                    } else {
                        res.end(err.message);
                    }
                })
            } else { //已经存在
                exists(myresume);
            }
        } else {
            res.end(err.message);
        }
    });
}

module.exports = router;

var resume = {
    desc: "一个敢于创新、热爱编程孜孜不倦学习与超越的新人。不拘于现状、自己的想法和理想志上，喜欢并且热衷于帮助同样好学、好问的队友。做事谨慎、认真，偏完美主义。比较有想法。很多时候如果我认同，那么他人（公司）的产品或者成果会当做我自己的作品，倾注100%的热情和努力。",//个人简介
    info: {//详细信息
        name: "崔磊",//姓名
        location: "上海市-普陀区-中潭路-100弄",//地点
        phone: "13127679517",//手机
        email: "1249146043@qq.com",//邮件
        birthday: "1995.02.04",//生日
        home: "湖北省-孝感市"//老家
    },
    target: "高级软件工程师 / 架构师",//就业目标
    skills: [
        "熟练各种条件下的应用分布式架构",
        "了解企业级SOA体系架构体系",
        "熟悉JMS在各种场合下的应用，例如实时报警",
        "掌握各种应用层框架和技术，例如AMQ、Shiro、Solr",
        "熟悉集群分布的数据库、缓存同步与分离",
        "能根据不同应用场景业务架构的纵/横向分割应用架构",
        "有java基本框架的源码级阅读能力和修改经验。如spring、mybatis",
        "独立完成整个项目的能力和经验，庞大的数据库结构设计经验",
        "掌握nodejs、以及nosql数据库，例如本简历后台既是node和mongodb",
        "安卓、windows平台wpf.net开发能力"
    ],//IT技能
    keyProps: [
        {
            key: "极好的学习能力",
            value: "源自于对技术的不断追求和行业的热爱，以及本人对热衷事物的痴迷和决心。"
        },
        {
            key: "多方面技能点",
            value: "热衷的方面包含不同的平台、不同的技术语言以及不同方向，有一定的全能性"
        },
        {
            key: "年轻有为",
            value: "然而并不是对自己的夸奖。只是人不在年轻有动力的时候奋斗还等何时，至少在我之前的学习、工作经历上，我一向是做得最好的。过去、现在、以后也都要如此。"
        },
        {
            key: "乐于助人",
            value: "我喜欢好学、爱问的人。不管是谁，如果向我请教，多忙都会放下，然后孜孜不倦的给予帮助和支持。当然、学习是双向的，我也喜欢团队其他人这方面跟我一样。能促造一个良好的学习、提升的氛围"
        },
        {
            key: "纠正与完善",
            value: "人无完人，我深刻的知道我在很多方面的不足。很多时候我会特意观察周围人的一言一行，例如会议中为什么某人能折服其他人，我会思考他的言行，默默的、悄无声息的提升自己。"
        },
        {
            key: "打破常规",
            value: "就如这份简历。"
        },
        {
            key: "重人情",
            value: "我经历过两次离职，都是我提出的。但是和以前创业公司合伙人、之前的公司老板现在都是很好的朋友。不同的观点或者理想或许不能让我们长久，但是关系是久远的，或者以后我们还能在一个办公室。"
        },
        {
            key: "非常靠谱",
            value: "在上一个创业公司中，即使我是最小的年龄和最低的出身（他们都是国外的海归），但是仍然毫无压力的获得了他们的肯定。如果可以，我愿意和你在面试中畅谈创业的心酸和离职由来。"
        }
    ],
    educations: [
        "中南财经政法大学（武汉学院）",
        "大二期间出来实习，后来辍学。未觉遗憾"
    ],//教育经历
    experiences: [{//工作经验
        tags: ['2014', '上海丰萤电子科技', '高级软件工程师', 'GAS网上营业厅'],//标签
        descriptions: [
            "项目介绍：<br>GAS云网厅，是上海丰萤电子科技自助研发的产品之一，面向燃气企业的管理系统。<br>涵盖开户、业务预约、谱表报数、IC支付、自动缴费等功能，<br>目的是100%完成实体营业厅的所以工作.",
            "项目职责：<br>后端系统架构、核心API",
            "责任描述：<br>1.后台核心API设计与实现<br>2.API文档<br>3.支付与互联<br>4.部分数据库结构设计<br>5.核心代码实现",
            "核心技术/难点：<br>1.国内从未尝试过的RESTFul框架：Dropwizard<br>2.Docker集群",
            "这个公司是我成长最明显的地方。虽然现在已经被并购（现：万邮文化发展有限公司），但是里面确实有一些对我影响颇深的人。我很感谢。"
        ]//具体描述
    }, {//工作经验
        tags: ['2014', '上海丰萤电子科技', '架构师', 'IBS员工福利系统'],//标签
        descriptions: [
            "项目介绍：<br>IBS是面向企业HR的大型B2B电商平台<br>简单描述就是：供应商发布商品-HR选择购买套餐-企业员工依据积分兑换商品。<br>整体分为：官网、运营段、企业端、供应商端、员工端5个模块.",
            "责任描述：<br>1.运营端项目架构<br>2.搜索以及JMS事件路由开发架设<br>3.承担小部分业务方面开发工作<br>4.核心代码实现<br>5.框架扩展<br>6.开发任务分配",
            "核心技术/难点：<br>1.分布式、异构性系统<br>2.JAT实务解决方案<br>3.搜索、JMS<br>4.实时报错与监控",
        ]//具体描述
    }, {//工作经验
        tags: ['2015', 'EssentialBlub', '架构师/工程师', 'ESSE'],//标签
        descriptions: [
            "项目介绍：<br>ESSE是Essential的简写。是一个（现阶段）以分享美食为主导的APP应用<br>包含：发布美食商户体验经历、生产美食商户、评论、点赞、分享、转发等<br>以美食点评与分享为主导等功能.",
            "责任描述：<br>1.整个后台体系架构<br>2.全部API设计与实现<br>3.技术与方向的选型<br>4.项目管理平台构建<br>5.后端运维方面<br>6.参与商讨公司、产品未来方向",
            "核心技术/难点：<br>1.分布式、异构性系统<br>2.复杂的自动化项目构建方案<br>3.复杂的部署环境",
            "EssentialClub这个创业团队，带给我的是一个自由的没有约束的发挥空间。在职期间，整个产品架构都是我以自己的认知、自己的理解和钻研而实践出来的。这一点我很感谢他们。"
        ]//具体描述
    }],
    text: "（别忘了这是份简历，既然你看到了这里，我就悄悄的告诉你，点击大雄有意外惊喜，然后就取决于您的选择了）<br>首先感谢您耐心的把这篇无聊的简历看到了结尾，我发现，我绞尽脑汁，也只写到了这种程度，还不如我曾经是学生时写的简历。<br>我曾经在一个面试中，一个长者跟我说过，“小伙子，你真的不错，但是你需要沉淀...你太急了”。<br>但是我不会变，如果我真的需要沉淀，或许我现在应该还在学校，那时候我更是会后悔，真的太晚了。<br>我期待能有打破常规的公司来邀请我这个想打破常规的人来一场打破常规的面试。"//正文
}